package cn.iocoder.yudao.module.hs.enums;

import cn.iocoder.yudao.framework.common.exception.ErrorCode;

public interface ErrorCodeConstants {

    // ========== 物料信息 1_009_000_001 ==========
    ErrorCode MATERIAL_NOT_EXISTS = new ErrorCode(1_009_000_001, "物料信息不存在");

    // ========== 物料箱信息 1_009_001_001 ==========
    ErrorCode MATERIAL_BOX_NOT_EXISTS = new ErrorCode(1_009_001_001, "物料箱信息不存在");
    ErrorCode MATERIAL_BOX_CAPACITY_ERROR = new ErrorCode(1_009_000_002, "物料箱容量超出");

    // ========== 托盘信息 1_009_002_001 ==========
    ErrorCode TRAY_NOT_EXISTS = new ErrorCode(1_009_002_001, "托盘信息不存在");
    ErrorCode TRAY_WAREHOUSE_EXISTS = new ErrorCode(1_009_002_002, "托盘非待入库状态，不可入库");
    ErrorCode TRAY_RFID_NOT_EXISTS = new ErrorCode(1_009_002_003, "扫码托盘或RFID信息不存在，请确认后重新扫码");
    ErrorCode TRAY_RFID_MATERIAL_EMPTY = new ErrorCode(1_009_002_004, "扫码托盘或RFID没有关联的物料信息，无法入库。");
    ErrorCode TRAY_RFID_NOT_IN_SHIP_ORDER = new ErrorCode(1_009_002_005, "扫码托盘或RFID不在当前出库单中，无法进行出库。");
    ErrorCode TRAY_RFID_NOT_IN_WAREHOUSE = new ErrorCode(1_009_002_006, "扫码托盘或RFID不在当前仓库中，无法进行入库");
    ErrorCode TRAY_RFID_NOT_IN_ORDER = new ErrorCode(1_009_002_007, "扫码托盘或RFID不在当前单子中，请确认，");



    // ========== RFID信息 1_009_003_001 ==========
    ErrorCode RFID_NOT_EXISTS = new ErrorCode(1_009_003_001, "RFID信息不存在");
    ErrorCode RFID_ALREADY_BOUND = new ErrorCode(1_009_003_002, "当前RFID已经绑定了其他托盘");
    ErrorCode RFID_ALREADY_ENTRY = new ErrorCode(1_009_003_003, "当前RFID已经入库了");
    ErrorCode RFID_LOW_BATTERY = new ErrorCode(1_009_003_004, "当前RFID电量不足，请更换RFID标签");
    ErrorCode RFID_NOT_FOUND = new ErrorCode(1_009_003_005, "RFID已损坏或者已经完全没有电了，请更换RFID标签");

    // ========== 基站信息 1_009_004_001 ==========
    ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(1_009_004_001, "基站信息不存在");
    ErrorCode DEVICE_WAREHOUSE_NOT_BIND = new ErrorCode(1_009_004_002, "当前托盘所在仓库未连接设备");

    // ========== 仓库信息 1_009_005_001 ==========
    ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_009_005_001, "仓库信息不存在");
    ErrorCode WAREHOUSE_TYPE_ERROR = new ErrorCode(1_009_005_002, "当前基站或用户非三方仓，无法创建三方仓入库单");

    // ========== RFID更换记录 1_009_006_001 ==========
    ErrorCode RFID_CHANGE_RECORD_NOT_EXISTS = new ErrorCode(1_009_006_001, "RFID更换记录不存在");
    ErrorCode RFID_CHANGE_RECORD_OLD_NOT_BIND = new ErrorCode(1_009_006_002, "原RFID未绑定托盘");
    ErrorCode RFID_CHANGE_RECORD_NEW_BINDED = new ErrorCode(1_009_006_003, "新RFID已绑定托盘");


    // ========== 入库单 1_009_007_001 ==========
    ErrorCode ENTRY_ORDER_NOT_EXISTS = new ErrorCode(1_009_007_001, "入库单不存在");
    ErrorCode ENTRY_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_009_007_002, "入库单明细不存在");
    ErrorCode ENTRY_ORDER_WAREHOUSE_ERROR = new ErrorCode(1_009_007_005, "当前仓库和出库单目的仓库不一致，不能入库");
    ErrorCode ENTRY_ORDER_NEED_QC = new ErrorCode(1_009_007_006, "有未进行质检的物料，不能入库");
    ErrorCode ENTRY_ORDER_MATERIAL_EXISTS = new ErrorCode(1_009_007_003, "该托盘存在已入库的物料，无法重复入库");
    ErrorCode ENTRY_ORDER_TRAY_EXISTS = new ErrorCode(1_009_007_004, "该托盘已入库，无法重复入库");
    ErrorCode ENTRY_ORDER_NOT_RECEIVE = new ErrorCode(1_009_007_007, "该托盘还为收货，无法进行入库处理，托盘编码：【{}】");
    ErrorCode ENTRY_ORDER_NOT_RECEIVE_DETAIL = new ErrorCode(1_009_007_008, "该托盘还为收货，无法进行入库处理，托盘编码：【{}】");

    // ========== 出库单 1_009_008_001 ==========
    ErrorCode SHIP_ORDER_NOT_EXISTS = new ErrorCode(1_009_008_001, "出库单不存在");
    ErrorCode SHIP_ORDER_EXISTS = new ErrorCode(1_009_008_002, "出库单已经存在");
    ErrorCode SHIP_ORDER_STATUS_CANNOT_DELETE = new ErrorCode(1_009_008_004, "已收货的出库单不能进行撤回");
    ErrorCode SHIP_ORDER_TRIPARTITE_EMPTY = new ErrorCode(1_009_008_005, "创建的出库单清单不能为空");
    ErrorCode SHIP_ORDER_TRIPARTITE_MATERIAL_NOT_ENOUGH = new ErrorCode(1_009_008_006, "要出库的物料库存不足，物料物料代码：【{}】");
    ErrorCode SHIP_ORDER_CUSTOMER_MATERIALMODE_ERROR = new ErrorCode(1_009_008_009, "所选物料机型与终端客户仓库信息不匹配");
    ErrorCode SHIP_ORDER_MATERIALMODE_NOT_SAME_WAREHOUSE_CUSTOMER = new ErrorCode(1_009_008_010, "多个机型所属三方仓或终端客户不一致");
    ErrorCode SHIP_ORDER_WAREHOUSE_NOT_MATCH = new ErrorCode(1_009_008_008, "出库单目的仓库与所在仓库不匹配");



    // ========== 出库单明细 1_009_009_001 ==========
    ErrorCode SHIP_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_009_009_001, "出库单明细不存在");
    ErrorCode SHIP_ORDER_DETAIL_MATERIAL_NOT_ENOUGH = new ErrorCode(1_009_009_002, "库存物料数量不足，不能拣货");
    ErrorCode SHIP_ORDER_DETAIL_EMPTY = new ErrorCode(1_009_009_003, "同步的出库单明细为空");

    // ========== 拣货任务 1_009_010_001 ==========
    ErrorCode PICK_TASK_NOT_EXISTS = new ErrorCode(1_009_010_001, "拣货任务不存在");
    ErrorCode PICK_TASK_EXISTS = new ErrorCode(1_009_010_003, "该出货单已经存在拣货任务");
    ErrorCode PICK_TASK_STATUS_ERROR = new ErrorCode(1_009_010_004, "当前拣货任务已经完成，不能进行拣货");
    ErrorCode PICK_TASK_MATERIAL_NOT_ENOUGH = new ErrorCode(1_009_010_005, "当前物料代码对应的库存不足，无法开始拣货");
    ErrorCode PICK_TASK_COUNT_LIMIT = new ErrorCode(1_009_010_006, "当前有拣货中的任务，请先完成再创建新任务");
    ErrorCode PICK_TASK_RFID_NOT_FOUND = new ErrorCode(1_009_010_007, "托盘未绑定RFID或未找到RFID，托盘编码【{}】");

    // ========== 拣货任务机型明细 1_009_011_001 ==========
    ErrorCode PICK_TASK_MATERIAL_NOT_EXISTS = new ErrorCode(1_009_011_001, "拣货任务机型明细不存在");

    // ========== 拣货物料明细 1_009_012_001 ==========
    ErrorCode PICK_TASK_MATERIAL_DETAIL_NOT_EXISTS = new ErrorCode(1_009_012_001, "拣货物料明细不存在");
    ErrorCode PICK_TASK_MATERIAL_DETAIL_DUPLICATE = new ErrorCode(1_009_012_002, "拣货物料明细重复插入");
    ErrorCode PICK_TASK_MATERIAL_DETAIL_SELECTED_EMPTY = new ErrorCode(1_009_012_003, "已扫码选择的物料信息为空");

    // ========== 拣货任务开始 1_009_013_001 ==========
    ErrorCode START_PICK_LOCK = new ErrorCode(1_009_013_001, "当前任务已经由其他人员开始执行");
    ErrorCode START_PICK_PUSH_EMPTY = new ErrorCode(1_009_013_005, "扫码获取的物料信息列表为空");
    ErrorCode START_PICK_PUSH_DUPLICATE = new ErrorCode(1_009_013_005, "扫码获取的物料信息列表和之前已选择的物料信息有重复的，请重新扫描");
    ErrorCode START_PICK_MATERIAL_COUNT_OVER_MAX = new ErrorCode(1_009_013_006, "扫码获取的物料数量已经超过出库数量");
    ErrorCode START_PICK_PICKED_EMPTY = new ErrorCode(1_009_013_007, "已拾取的物料信息为空，无法进行合托");
    ErrorCode START_PICK_MERGE_CREATE_EXISTS = new ErrorCode(1_009_013_008, "相同编号的托盘已经存在，不能重复创建。");
    ErrorCode START_PICK_MERGE_TRAY_RFID_BIND_ERROR = new ErrorCode(1_009_013_008, "合托扫码的托盘或者RFID信息绑定关系错误");
    ErrorCode START_PICK_MERGE_MUST_NEW_OR_GREEN = new ErrorCode(1_009_013_009, "合托扫码的托盘或者RFID必须是新托盘或者当前任务中绿色灯的托盘");


    // ========== 收货单 1_009_014_001 ==========
    ErrorCode RECEIVE_ORDER_NOT_EXISTS = new ErrorCode(1_009_014_001, "收货单不存在");
    ErrorCode RECEIVE_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_009_014_002, "收货单明细不存在");
    ErrorCode RECEIVE_ORDER_NOT_MATERIAL = new ErrorCode(1_009_014_003, "未找到编码:【{}】对应的出库物料");
    ErrorCode RECEIVE_ORDER_STATUS_ERROR = new ErrorCode(1_009_014_004, "物料产品码:【{}】对应的出库单状态错误，无法进行收货");
    ErrorCode RECEIVE_ORDER_WAREHOUSE_ERROR = new ErrorCode(1_009_014_005, "当前登录账号所在仓库和出库单目的仓库不一致，不能进行收货。");
    ErrorCode RECEIVE_ORDER_CODE_LIST_TOO_MANY = new ErrorCode(1_009_014_006, "一次收货托盘数不能超过5个");

    ErrorCode SAP_DATA_SYNC_MATERIAL_TRAY_CODE_EMPTY = new ErrorCode(1_009_015_001, "SAP物料信息同步托盘编码为空");
    ErrorCode SAP_DATA_SYNC_MATERIAL_TRAY_EXISTS = new ErrorCode(1_009_015_002, "SAP物料信息同步托盘已经存在");
    ErrorCode SAP_DATA_SYNC_MATERIAL_BOX_CODE_EMPTY = new ErrorCode(1_009_015_003, "SAP物料信息同步物料箱编码为空");
    ErrorCode SAP_DATA_SYNC_MATERIAL_BOX_EXISTS = new ErrorCode(1_009_015_004, "SAP物料信息同步托盘已经存在");
    ErrorCode SAP_DATA_SYNC_MATERIAL_CODE_EMPTY = new ErrorCode(1_009_015_005, "SAP物料信息同步产品码为空");
    ErrorCode SAP_DATA_SYNC_MATERIAL_NAME_EMPTY = new ErrorCode(1_009_015_006, "SAP物料信息同步物料名称为空");
    ErrorCode SAP_DATA_SYNC_MATERIAL_MODECODE_EMPTY = new ErrorCode(1_009_015_007, "SAP物料信息同步物料物料代码为空");
    ErrorCode SAP_DATA_SYNC_MATERIAL_EXISTS = new ErrorCode(1_009_015_008, "SAP物料信息同步物料已经存在");
    ErrorCode SAP_DATA_SYNC_MATERIAL_EMPTY = new ErrorCode(1_009_015_009, "SAP物料信息同步为空");

    ErrorCode SAP_DATA_SYNC_SHIP_ORDER_CODE_EMPTY = new ErrorCode(1_009_015_010, "SAP出库单同步出库单号为空");
    ErrorCode SAP_DATA_SYNC_SHIP_ORDER_DETAIL_EMPTY = new ErrorCode(1_009_015_012, "SAP出库单同步出库单明细为空");

    ErrorCode MATERIAL_LOG_NOT_EXISTS = new ErrorCode(1_009_016_001, "物料日志不存在");

    ErrorCode QC_ORDER_NOT_EXISTS = new ErrorCode(1_009_017_001, "质检单不存在");
    ErrorCode QC_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_009_018_001, "质检单明细不存在");

    ErrorCode QC_HISTORY_NOT_EXISTS = new ErrorCode(1_009_019_001, "物料质检历史记录不存在");

    ErrorCode RAW_MATERIAL_ORDER_NOT_EXISTS = new ErrorCode(1_009_020_001, "领料单信息不存在");

    ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_009_021_001, "客户信息不存在");

    ErrorCode MATERIAL_MODE_NOT_EXISTS = new ErrorCode(1_009_022_001, "机型信息不存在");
    ErrorCode MATERIAL_MODE_NOT_EXISTS_NO_QC = new ErrorCode(1_009_022_003, "机型信息不存在，不能进行质检");
    ErrorCode MATERIAL_MODE_LANDING_QC_NO = new ErrorCode(1_009_022_004, "机型信息配置未不进行落地检，不能进行质检");
    ErrorCode MATERIAL_MODE_NOT_EXISTS_DIRECT_YES = new ErrorCode(1_009_022_005, "不存在直发的机型配置信息");
    ErrorCode MATERIAL_MODE_NOT_EXISTS_DIRECT_NO = new ErrorCode(1_009_022_005, "不存在非直发的机型配置信息");

    ErrorCode TRAY_SCAN_RECORD_NOT_EXISTS = new ErrorCode(1_009_023_005, "单号托盘点亮状态记录不存在");

    ErrorCode SHIP_ORDER_TRAY_RECORD_NOT_EXISTS = new ErrorCode(1_009_024_001, "出库单托盘记录不存在");
    ErrorCode SHIP_ORDER_TRAY_RECORD_EXISTS = new ErrorCode(1_009_024_002, "出库单托盘记录已经存在");
}